#pragma once
#include "CDependencyObject.h"


class CDuration;
class CStoryboard;
class CFrameworkElement;
class CVisualState;
class CControl;
class CVisualStateGroup;
class CString;


class CVisualTransition :
	public CDependencyObject
{

private: 
	CVisualTransition(CCoreServices * pCore);
protected: 
	virtual ~CVisualTransition();
public: 
	static HRESULT Create(CDependencyObject * * ppObject, CREATEPARAMETERS * pCreate);
	virtual XUINT32 GetTypeIndex() const;
	bool GetIsDefault();
	HRESULT RegisterTransitionalStoryboardCompletedEvent(CStoryboard * pStoryboard, CControl * pRoot, CFrameworkElement * pImplRoot, CVisualState * pOldState, CVisualState * pNewState, CVisualStateGroup * pGroup);
	static HRESULT OnDynamicStoryboardCompleted(struct Xcp_IDependencyObject * pSender, struct Xcp_IDependencyObject * pEventArgs);
	static HRESULT OnExplicitStoryboardCompleted(struct Xcp_IDependencyObject * pSender, struct Xcp_IDependencyObject * pEventArgs);
	virtual HRESULT RegisterName(CDependencyObject * pNamescopeOwner, XBOOL bTemplateNamescope);
	CDuration * m_pDuration;
	CString * m_pTo;
	CString * m_pFrom;
	CStoryboard * m_pStoryboard;
	CDependencyObject * m_pEasingFunction;
	bool m_fHasDynamicStoryboardCompleted;
	bool m_fHasExplicitStoryboardCompleted;
};